package mlz.a_polymorphic.demo02;


//父类类型作为方法参数
public class DemoTest03 {
    public static void main(String[] args) {
        //传递不用的对象,获取到的具体内容也就不一样
//        Animal a = new Dog();
//        getMePet(a);
        getMePet(new Dog());

        getMePet(new Cat());




    }


    //定义方法参数为父类类型 ->  案例: 买宠物
//    public static void getMePet(Dog dog){
//        dog.watchHouse();
//        dog.eat();
//    }
//    public static void getMePet(Cat cat){
//        cat.catchMouse();
//        cat.eat();
//    }

    //定义方法参数为父类类型
    public static void getMePet(Animal a){ //两个子类: cat dog
        if (a instanceof Dog){
            //强转
//            Dog d = (Dog) a;
//            d.watchHouse();
            ((Dog) a).watchHouse();
        }else if (a instanceof Cat){
            ((Cat) a).catchMouse();
        }
        a.eat();
    }
}








